Display of a graphical user interface based on a detected value

ABSTRACT

A method and system to display a graphical user interface based on a detected value are disclosed. The system sets a client-side variable to a value responsive to a client device loading data from a server. A graphical user interface is loaded, by the system, onto the client device. The graphical user interface is configured to remain hidden for a predetermined length of time. A detection is made, by the system, that the value of the client-side variable remains unchanged after the predetermined length of time. In some instances, the value of the client-side variable is preserved responsive to the client device loading further data from a further server. The graphical user interface is displayed based on the detection the value of the client-side variable remains unchanged.

RELATED APPLICATIONS

This application is a continuation of and claims the benefit of priorityto U.S. patent application Ser. No. 13/857,906, filed on Apr. 5, 2013,which is a continuation that claims the benefit of priority, to U.S.patent application Ser. No. 10/837,137 filed on Apr. 30, 2004, which areincorporated herein by reference in their entirety.

FIELD OF THE INVENTION

The present invention relates generally to the field of graphical userinterfaces for computing, and more particularly to a method and systemto display a pop-up window when a user leaves a particular website

BACKGROUND OF THE INVENTION

Online retailers have come up with many clever methods to advertisetheir goods and services on the World Wide Web via the Internet. Onesuch scheme is referred to as a pop-up window. A pop-up window,sometimes referred to as a pop-up advertisement, is a window thatsuddenly appears (pops up) when a user takes a particular action, suchas when a user selects a link with a mouse click or presses a specialfunction key on a keyboard. Generally, pop-up windows are one of twotypes. A pop-up advertisement is a window that appears on top of theactive window, thereby disrupting the user by blocking the view of theactive window. A pop-under advertisement is a pop-up window that appearsunderneath the active window so that it does not disturb the user.

While pop-up windows are primarily used for advertising, there are avariety of other uses for pop-up windows. For example, an onlineretailer might use a pop-up window to present a survey, or otherwisesolicit information, from the user.

SUMMARY OF THE INVENTION

In accordance with one aspect of the present invention, there isprovided a method and system to display a pop-up window when a userleaves a website. Accordingly, a client-side variable is set with aparticular value each time a user interacts in a particular manner witha particular website. In addition, a pop-up window is loaded, but notdisplayed. The pop-up window is programmed to sleep for a predeterminedlength of time, and then, wake up and check the value of the client-sidevariable. If the value of the client side variable has not changed whilethe pop-window was sleeping, then the pop-up window is displayed.

Other features of the present invention will be apparent from theaccompanying drawings and from the detailed description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings, in which likereferences indicate similar elements and in which:

FIG. 1 illustrates an exemplary client-server network environment inwhich the present invention might be implemented.

FIG. 2 illustrates a computer display screen displaying an exemplarypop-up window.

FIGS. 3 and 4 illustrate timing and event diagrams for one embodiment ofa method to display a pop-up window when a user leaves a website.

FIG. 4 illustrates a timing and event diagram for an alternativeembodiment of a method to display a pop-up window when a user leaves awebsite.

FIG. 5 illustrates a flowchart diagram, consistent with one embodimentof the present invention, for a method to display a pop-up window when auser leaves a website.

FIG. 6 illustrates an embodiment of a system to display a pop-up windowwhen a user leaves a website.

FIG. 7 shows a diagrammatic representation of a machine in the exemplaryform of a computer system within which a set of instructions, forcausing the machine to perform any one of the methodologies discussedabove, may be executed.

DETAILED DESCRIPTION

A method and system to display a pop-up window when a user leaves awebsite are described. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of the present invention. It will be evident,however, to one skilled in the art that the present invention may bepracticed without these specific details.

FIG. 1 illustrates an exemplary client-server network environment 10 inwhich the present invention might be implemented. The client-servernetwork environment 10 includes a client PC 12, coupled to two differentservers, a server XYZ 14 and a server ABC 16, via the Internet 18. Theserver XYZ 14 executes server software including, but not limited to,web server software to host a website with a World Wide Web domain nameof www.xyz.com. Similarly, the server ABC 16 executes server softwareincluding, but not limited to, web server software to host a websitewith a World Wide Web domain name of www.abc.com. A user of the clientPC 12 utilizes a web browser application executing on the client PC 12to access server documents (e.g., web pages) stored on the server XYZ 14and the server ABC 16.

In accordance with an embodiment of the present invention, a userbrowsing web pages from one website, for example the XYZ web site hostedon the server XYZ 14, will be presented with a pop-up window if the userleaves the XYZ web site. For example, if the user selects a link to theABC web site, hosted on the server ABC 14, a pop-up window will bedisplayed to the user. The pop-up window might serve one of any numberof purposes, including presenting the user with a survey, and inparticular, inquiring of the user the reason for leaving the XYZ website.

FIG. 2 illustrates a computer display screen 20 displaying a pop-upwindow 22 in a type of graphical user interface referred to as awindowing system. The present invention is independent of any particulartype of windowing system and may be implemented to work with anyoperating system utilizing a windowing system, including the well knownMicrosoft Windows® operating system. For one embodiment of theinvention, the windowing system allows individual programs to beseparately executed and displayed in individual windows on the displayscreen 20. For example, as illustrated in FIG. 2, a web browser programis executing in the background window 24 and in the pop-up window 22.

For one embodiment of the present invention, a user browses a website byentering a uniform resource locator (URL) (e.g., http://www.xyz.com)into the address bar of the web browser program executing in the window14. The user can also navigate by selecting different internal andexternal links on the individual web pages of the XYZ website. Aninternal link is a link to another web page on the XYZ website, oranother location on the same web page of the XYZ website. An externallink is a link to a web page of another website, for example, the ABCwebsite (e.g., http://www.abc.com). In addition, most web browserprograms have “back” and “forward” buttons that allow the user tonavigate back and forth between previously loaded web pages.

For one embodiment of the present invention, so long as the user stayson the XYZ website by selecting internal links to the XYZ website, orentering URL addresses of the XYZ website, no pop-up window 22 will bedisplayed. However, when the user selects an external link, or enters aURL address external to the XYZ website, a pop-up window 22 isdisplayed. In addition, if the user closes the web browser all together,a pop-up window will be displayed. One advantage of the presentinvention is that the developer is given control over exactly when apop-up window is displayed and pop-up windows are not indiscriminatelydisplayed during the user's web browsing session.

FIG. 3 illustrates a timing and event diagram for one embodiment of amethod to display a pop-up window when a user leaves a website. In FIG.3, the horizontal timeline 26 stretching across the top of the figurerepresents time and is used to illustrate the relationship betweendifferent events with respect to time. For example, it can be seen fromFIG. 3 that at time 0, a web browser event occurs (e.g., load page) andthe value of the client-side variable is set to 0. For purposes ofdescribing the invention, it will be appreciated that the particularunits used to measure time are unimportant, and therefore not given.

The horizontal line labeled “CLIENT-SIDE VARIABLE VALUE” 28 stretchinghorizontally across the figure illustrates the value of the client-sidevariable over time. For example, it can be seen from FIG. 3, that thevalue of the client-side variable is originally set to 0 at time 0 andthen the value is changed to 5 at time 5. Similarly, the horizontal linelabeled “WEB BROWSER EVENT” 30 represents an event timeline for webbrowser events. The horizontal line labeled “POP-UP WINDOW EVENT” 32illustrates the pop-up window events associated with the pop-up windows42, 44, and 46. For example, from FIG. 3, it can be seen that hiddenpop-up window 42 is loaded at time 3 and sleeps from the time it isloaded until time 6, when it checks the value of the client-sidevariable and is unloaded.

For one embodiment of the present invention, a user enters a URL, forexample, http://www.xyz.com, into the address bar of a web browserexecuting in a window 24 on the display screen 20. Accordingly, at time0, a web page 34 from the XYZ website is loaded into the web browser.When the web page 34 is loaded at time 0, a client-side variable is alsoset to a particular value. For one embodiment of the invention, and asillustrated in FIG. 3, the variable is set to a value corresponding tothe current time. For example, at time 0, the value of the variable isset to 0.

Next, when the user selects the internal XYZ link on the web page 34,the web browser requests a new web page 36 from the web server hostingthe XYZ website. Accordingly, at time 3, the web browser unloads theoriginal web page 34 and, at the same time, the windowing system loads ahidden pop-up window as indicated by the dotted-line box with referencenumber 42. The hidden pop-up window 42 is not displayed to the user andis programmed to immediately sleep for a predetermined amount of time.As illustrated in FIG. 3, the hidden pop-up window 42 sleeps until time6. However, at time 5, the web browser executing in window 24 completesthe loading of the new web page 36. When the XYZ web server 14 servesthe new web page 36, the client-side variable is also set to the currenttime when the new web page 36 is loaded. Consequently, at time 5, thevalue of the client-side variable is set to 5.

At time 6, when the pop-up window 42 awakes and checks the value of theclient-side variable, the pop-up window determines that the value of theclient-side variable has changed from 0 to 5. For one embodiment of thepresent invention, the pop-up window 42 is programmed to exit, orunload, if the value of the client-side variable has changed since thetime when the pop-up window was originally loaded. For one embodiment ofthe present invention, when the pop-up window is initially created, thecurrent value of the client-side variable is passed into the pop-upwindow. As illustrated in FIG. 3, when the pop-up window checks thevalue of the client-side variable at time 6, the pop-up windowdetermines that the value of the client-side variable has changed from 0to 5 and consequently, the pop-up window 34 is unloaded and neverdisplayed to the user.

When the user selects the internal XYZ link on web page 36, the webbrowser executing in window 24 requests a new web page 38 from the webserver hosting the XYZ website. Accordingly, at time 8, the web browserunloads the current web page 36 and the windowing system once againloads a hidden pop-up window 44. Again, the pop-up window 44 isprogrammed to sleep for a predetermined amount of time. For example, asillustrated in FIG. 3, the pop-up window 44 is programmed to sleep forthree units of time, until time 11, before checking the value of theclient-side variable. At time 10, the web browser completes the loadingof the new web page 38 served by the web server 14 hosting the XYZwebsite. At time 10, when the new web page 30 is loaded, the client-sidevariable is also set to 10, the current time. Then, at time 11, thepop-up window 44 checks the value of the client-side variable anddetermines the value to be 10. Because the value of the client-sidevariable was changed from 5 to 10 when the new web page 38 was loaded,indicating that the new web page 38 was from the XYZ web server, thepop-up window 44 unloads before ever being displayed to the user.

When the user selects the external ABC link on web page 38, the webbrowser executing in window 24 requests a new web page 40 from the webserver 16 hosting the ABC website. Accordingly, at time 13, the webbrowser unloads the current web page 38 and the windowing system onceagain loads a hidden pop-up window 20. The hidden pop-up window 20 isprogrammed to sleep for a predetermined amount of time before checkingthe value of the client-side variable. At time 15, the web browsercompletes loading of the new web page 40 served by the server 16 hostingthe ABC website. However, because the new web page 40 is from the ABCweb server, and not the XYZ web server, the value of the client-sidevariable is not changed, but instead, the value of the client-sidevariable remains 10. For one embodiment of the invention, only the XYZweb server, or a web server designated by the XYZ web server, can access(e.g., read or write) the client-side variable. Therefore, at time 16,when the hidden pop-up window 20 awakes and checks the value of theclient-side variable, it determines that the client-side variable hasnot changed from the time the hidden pop-up window 20 was loaded.Consequently, the pop-up window 20 is displayed to the user at time 16.

In the example given with reference to FIG. 3, the pop-up window makes acomparison of the value of the client-side variable at the time thepop-up window is generated with the value of the client-side variablewhen the pop-up window wakes up. However, in an alternative embodiment,the pop-up window is programmed to compare the actual time that thepop-up window was created with the value of the client-side variablewhen the pop-up window wakes up. For example, at time 3 when the pop-upwindow 42 is loaded, the pop-up window checks the time and stores it tocompare it with the client-side variable when the pop-up window awakes.Therefore, at time 3, the pop-up window would store the value 3.Consequently, at time 6 when the pop-up window checks the time stored inthe client-side variable, it will determine that the time is later thanthe time when the pop-up window 42 was originally loaded because theclient-side variable was changed from 1 to 5 when web page 36 was loadedinto the web browser.

For one embodiment of the present invention, the client-side variable isan Internet cookie and the XYZ web server 14 hosting the XYZ websitespecifies a range of URLs for which the client-side variable is validand accessible. For example, when the XYZ web server initially createsthe cookie, the XYZ web server can specify what other web servers canaccess the cookie. A web server that can access the cookie can changethe value of the cookie when it serves a web page to the web browser.Consequently, the pop-up window will determine that the value of thecookie has changed and unload before becoming visible to the user. Whilean Internet cookie is one example of a client-side variable, it will beappreciated that alternative embodiments might utilize mechanisms otherthan Internet cookies as a client-side variable. For example, a file ora database on the client could be used in place of an Internet cookie.

For one embodiment of the present invention, JavaScript® event handlersare used to take a particular action when a web browser event or windowevent occurs, such as a web page being loaded or unloaded. For example,the JavaScript® “onLoad” event handler can be used to set the value ofthe client-side variable when a web page is loaded. Similarly, theJavaScript “onUnload” event handler can be used to generate a hiddenpop-up window when a web page is unloaded.

One advantage of the present invention is the increased flexibility andcontrol over the timing of the pop-up window. As illustrated in FIG. 4,by manipulating the length of time a pop-up window sleeps beforechecking the value of the client-side variable, a web-site developer cancontrol when a pop-up window is displayed to a user. For example, awebsite developer can increase the pop-up window sleep time so that thepop-up window checks the value of the client-side variable after theuser has left the website and then returned to the website. In suchcase, because the user has returned to the website, no pop-up window isdisplayed.

FIG. 4 illustrates a timing and event diagram for one embodiment of amethod to display a pop-up window when a user leaves a website. FIG. 4is very similar to FIG. 3, however, FIG. 4 illustrates the effect ofincreasing the sleep time of the pop-up window. For example, asillustrated in FIG. 4, by increasing the sleep time of the pop-up windowa user is provided with more time to return to the initial websitebefore a pop-up window is displayed.

As illustrated in FIG. 4, for one embodiment of the present invention, auser enters a URL, for example, http://www.xyz.com, into the address barof a web browser executing in a window 24 on the display screen 20.Accordingly, at time 0, a web page 46 from the XYZ website is loadedinto the web browser. When the web page 46 is loaded at time 0, aclient-side variable is also set to a particular value. For oneembodiment of the invention, and as illustrated in FIG. 4, the variableis set to a value corresponding to the current time. For example, attime 0, the value of the variable is set to 0.

Next, when the user selects the internal XYZ link on the web page 46,the web browser requests a new web page 48 from the web server 14hosting the XYZ website. Accordingly, at time 3, the web browser unloadsthe original web page 46 and, at the same time, the windowing systemloads a hidden pop-up window as indicated by the dotted-line box withreference number 54. The hidden pop-up window 54 is hidden and notdisplayed to the user, and is programmed to immediately sleep for apredetermined amount of time. In contrast to the example presented inFIG. 3, the sleep time is eight units of time for the exampleillustrated in FIG. 4. As illustrated in FIG. 4, the hidden pop-upwindow 54 sleeps until time 11.

At time 5, the web browser executing in window 24 completes the loadingof the new web page 48. When the XYZ web server serves the new web page48, the client-side variable is also set to the current time when thenew web page 48 is loaded. Consequently, at time 5, the value of theclient-side variable is set to 5.

When the user selects the external ABC link on web page 48, the webbrowser executing in window 24 requests a new web page 50 from the webserver 16 hosting the ABC website. Accordingly, at time 8, the webbrowser unloads the current web page 48 and the windowing system onceagain loads a hidden pop-up window 56. Again, the pop-up window 56 isprogrammed to sleep for a predetermined amount of time. For example, asillustrated in FIG. 4, the pop-up window 56 is programmed to sleep foreight units of time, until time 16, before checking the value of theclient-side variable. From time 8 until time 11, two hidden pop-upwindows are executing in the background of the window-based operatingsystem.

At time 10, the web browser completes the loading of the new web page 50served by the web server 16 hosting the ABC website. At time 10, whenthe new web page 50 is loaded, the client-side variable is not changed.Because the ABC server 16 cannot access the client-side variable, thevalue of the client-side variable does not change when the ABC web page50 is loaded. Then, at time 11, the pop-up window 44 checks the value ofthe client-side variable and determines the value to be 5. Because thevalue of the client-side variable was changed from 0 to 5 when thesecond XYZ web page 48 was loaded, indicating that the second web page38 was from the XYZ web server 16, the pop-up window 44 unloads beforeever being displayed to the user.

When the user selects the external XYZ link on web page 50, the webbrowser executing in window 24 requests a new web page 52 from the webserver 14 hosting the XYZ website. Accordingly, at time 13, the webbrowser unloads the current web page 50 and the windowing system onceagain loads a hidden pop-up window 58. The hidden pop-up window 58 isprogrammed to sleep for a predetermined amount of time before checkingthe value of the client-side variable. At time 15, the web browsercompletes loading of the new web page 52 served by the server 14 hostingthe XYZ website. Because the new web page 52 is from the XYZ web server,the value of the client-side variable is changed from 5 to the currenttime 15. At time 16, the pop-up window 56 loaded at time 8 wakes up andchecks the value of the client-side variable. Because the value changedfrom 5 to 15 at time 15, the hidden pop-up window is unloaded beforeever being displayed to the user. Consequently, despite the usernavigating away from the XYZ website by selecting the ABC link to theABC web page 50, the pop-up window 56 is not displayed to the userbecause the user returned to the XYZ website before the pop-up windowchecked the value of the client-side variable.

FIG. 5 illustrates a flowchart illustrating a method 60, according to anexemplary embodiment of the present invention, to display a pop-upwindow when a user leaves a website. At operation 62, a web page fromparticular website is loaded into a user's web browser and a client-sidevariable is set with a specific value.

Next, the user requests a new web page and, at operation 64, thepreviously loaded web page is unloaded from the user's web browser and ahidden pop-up window is loaded by the windowing system. The hiddenpop-up window sleeps for a predetermined amount of time at operation 66.At operation 68, the sleeping, hidden window awakes.

Next, at operation 70, the hidden pop-up window determines whether thevalue of the client-side variable has changed. If the value has changed,indicating that the new web page was loaded from the particular websitethat originally set the client-side variable, then the pop-up window isunloaded without ever being displayed to the user. However, if the valuehas not changed since the hidden pop-up window was loaded, then thepop-up window is displayed to the user at operation 74. In this case,because loading the new web page into the web browser did not alsotrigger a change in the value of the client-side variable, the new webpage must not have been from the website that originally set the valueof the client-side variable. Therefore, according to the method 60, itis assumed that the user has left the original website.

For one embodiment of the present invention, a second client-sidevariable tracks the number of pop-up windows actually displayed to theuser. For example, when a pop-up window is displayed to the user, thevalue of the second client-side variable is incremented by one. A pop-upwindow can then be programmed to check the value of the secondclient-side variable to determine how many times a pop-up window hasbeen displayed. If the value of the second client-side variable exceedssome predetermined threshold number then the pop-up window can beunloaded rather than displayed to the user. The second client-sidevariable (not shown) may be stored and modified in a manner similar tothe above-described time client-side variable, and the predeterminedspecial number may similarly be stored on the client-side. In analternative embodiment, the value of the second client-side variable ischecked prior to loading the hidden pop-up window. If the value of thesecond client-side variable exceeds some predetermined threshold number,then the pop-up window is never loaded.

FIG. 6 illustrates an embodiment of a system to display a pop-up windowwhen a user leaves a website. The system 76 illustrated in FIG. 6includes both client 84 and server 78 components. For example, thesystem 76 includes Internet server 78 with server documents 80 and webserver 82. In addition, the system 76 includes a client component 84.The client 84 includes a document viewer 86 (e.g., a web browser),client-side state data 88, an operating system 90 with a windowingsystem 92, an input/output system 94, an event detection and state logic96, a system time module 98, and a state comparator logic 100.

For one embodiment of the invention, the event detection and state logic96 detects events, such as the loading and unloading of server documents80 into a web browser 86, and sets a client-side variable 88representing the state of the system based on the events detected. Forexample, the event detection and state logic 78 may set a client-sidevariable upon detection of a web-browser interaction with a particularwebsite. A web browser interaction may include, but is not limited to,the unloading and loading of web documents 80 in a web browser 86executing in a window of a windowing system 92.

For one embodiment of the invention, the state comparator logic 100compares the client-side state data 88 of the system 76 at differenttimes to determine whether a user has left a particular website. Forexample, the state comparator logic 80 may compare the value of aclient-side variable that can only be modified by a particular webserver 82 or Internet server 78. For one embodiment, the client-sidevariable may be set with an arbitrary value, such as a charactersequence or a number. However, more intelligent determinations can bemade about the user's web browsing activity if the client-side value isa timestamp, and is set with the current time each time a qualifyingevent occurs. For example, the state comparator logic 100 may check thevalue of the client-side state variable at two different times todetermine whether the value has changed. If the variable is a timestamp,the state comparator logic 100 can determine the amount of time that hasgone by between the unloading of a web page and the loading of anotherweb page from the same website.

The windowing system 92 includes window loading logic to control theloading and unloading, as well as the hiding and displaying, of pop-upwindows. Accordingly, the windowing system 92 may cause a previouslyloaded, but hidden, pop-up window to be displayed if the statecomparator logic 100 determines the value of the client-side variablehas not changed. For one embodiment of the invention, when the statecomparator logic 100 does not detect a change in the client-sidevariable after a particular event has been detected (e.g., a webdocument unloaded), then a previously loaded, but hidden pop-up windowis displayed. Similarly, for one embodiment, if a change is detected inthe client-side variable, a previously loaded, but hidden pop-up windowis unloaded without ever being displayed. In alternative embodiments,events other than the loading and unloading of web documents may triggerthe display of a previously loaded, but hidden, pop-up window. Forexample, other events may trigger a change in the client-side variableindicating that the user has loaded a new web document from the samewebsite and accordingly, has not left the website.

FIG. 7 shows a diagrammatic representation of a machine in the exemplaryform of a computer system 200 within which a set of instructions, forcausing the machine to perform any one of the methodologies discussedabove, may be executed. In alternative embodiments, the machine maycomprise a network router, a network switch, a network bridge, personaldigital assistant (PDA), a cellular telephone, a web appliance or anymachine capable of executing a sequence of instructions that specifyactions to be taken by that machine.

The computer system 200 includes a processor 202, a main memory 204 anda static memory 206, which communicate with each other via a bus 208.The computer system 200 may further include a video display unit 210(e.g., a liquid crystal display (LCD) or cathode ray tube (CRT)). Thecomputer system 200 also includes an alphanumeric input device 212 (e.g.a keyboard), a cursor control device 214 (e.g. a mouse) a disk driveunit 216, a signal generation device 218 (e.g. a speaker) and a networkinterface device 220.

The disk drive unit 216 includes a machine-readable medium 222 on whichis stored a set of instructions (software) 224 embodying any one, orall, of the methodologies described above. The software 224 is alsoshown to reside, completely or at least partially, within the mainmemory 204 and/or within the processor 202. The software 224 may furtherbe transmitted or received via the network interface device 220. For thepurposes of this specification, the term “machine-readable medium” shallbe taken to include any medium which is capable of storing or encoding asequence of instructions for execution by the machine and that cause themachine to perform any one of the methodologies of the presentinvention. The term “machine-readable medium” shall accordingly be takento include, but not be limited to; solid-state memories, optical andmagnetic disks, and carriers wave signals.

Thus, a method and system to display a pop-up window when a user leavesa website are disclosed. It will be evident that various modificationsand changes may be made to these embodiments without departing from thebroader spirit and scope of the invention. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense. For example, the invention may also be appliedin a peer-to-peer computing environment.

What is claimed is:
 1. A method comprising: setting a client-sidevariable to a value, the setting being responsive to a client deviceloading data from a server; causing a graphical user interface to beloaded onto the client device, the graphical user interface beingconfigured to remain hidden for a predetermined length of time;detecting, using one or more processors, that the value of theclient-side variable remains unchanged after the predetermined length oftime; and causing display of the graphical user interface based on thedetecting that the value of the client-side variable remains unchanged.2. The method of claim 1, further comprising: receiving a request fromthe client device to load the data from the server; and causing the datato be loaded onto the client device, wherein: the data includes a webpage hosted by the server; and the setting the client-side variable to avalue is based on the causing the data to be loaded onto the clientdevice.
 3. The method of claim 2, wherein: the graphical user interfaceincludes a survey that requests information regarding an experience withthe web page hosted by the server.
 4. The method of claim 1, furthercomprising: receiving a request from the client device to unload thedata; and wherein the causing the graphical interface to be loaded ontothe client device is based on the request from the client device tounload the data.
 5. The method of claim 1, further comprising: receivinga request from the client device to load further data from the server;causing the further data to be loaded onto the client device; andsetting the client-side variable to a further value responsive to theclient device loading the further data from the server.
 6. The method ofclaim 1, further comprising: receiving a request from the client deviceto load further data from a further server; causing the further data tobe loaded onto the client device; and preserving the value of theclient-side variable responsive to the client device loading the furtherdata from the further server.
 7. The method of claim 1, wherein thevalue of the client-side variable indicates a moment during which theclient device loads the data from the server.
 8. The method of claim 1,further comprising: detecting that the value of the client-side variableafter the predetermined length of time is different from the value ofthe client-side variable before the predetermined length of time; andunloading the graphical user interface from the client device based onthe detecting that the value of the client-side variable after thepredetermined length of time is different.
 9. The method of claim 1,wherein: the predetermined length of time is a first length of time; thegraphical user interface is a first graphical user interface; and themethod further comprises: determining a second length of time; andcausing a second graphical user interface to be loaded onto the clientdevice, the second graphical user interface being configured to remainhidden for the second length of time.
 10. The method of claim 1, whereinthe graphical user interface is further configured to execute in abackground of an operating system running on the client device.
 11. Asystem comprising: one or more processors and a computer-readable mediumstoring executable instructions that, when executed by the one or moreprocessors, configure the one or more processors to at least: set aclient-side variable to a value, the setting being responsive to aclient device loading data from a server; cause a graphical userinterface to be loaded onto the client device, the graphical userinterface being configured to remain hidden for a predetermined lengthof time; detect, using one or more processors, that the value of theclient-side variable remains unchanged after the predetermined length oftime; and cause display of the graphical user interface based on thedetecting that the value of the client-side variable remains unchanged.12. The system of claim 11, wherein the one or more processors arefurther configured to: receive a request from the client device to loadthe data from the server; and cause the data to be loaded onto theclient device, wherein: the data includes a web page hosted by theserver; and the setting the client-side variable to a value is based onthe causing the data to be loaded onto the client device.
 13. The systemof claim 12, wherein the graphical user interface includes a survey thatrequests information regarding an experience with the web page hosted bythe server.
 14. The system of claim 11, wherein the one or moreprocessors are further configured to: receive a request from the clientdevice to unload the data; and wherein the causing the graphicalinterface to be loaded onto the client device is based on the requestfrom the client device to unload the data.
 15. The system of claim 11,wherein the one or more processors are further configured to: receive arequest from the client device to load further data from the server;cause the further data to be loaded onto the client device; and set theclient-side variable to a further value responsive to the client deviceloading the further data from the server.
 16. The system of claim 11,wherein the one or more processors are further configured to: receive arequest from the client device to load further data from a furtherserver; cause the further data to be loaded onto the client device; andpreserve the value of the client-side variable responsive to the clientdevice loading the further data from the further server.
 17. The systemof claim 11, wherein the one or more processors are further configuredto: detect that the value of the client-side variable after thepredetermined length of time is different from the value of theclient-side variable before the predetermined length of time; and unloadthe graphical user interface from the client device based on thedetecting that the value of the client-side variable after thepredetermined length of time is different.
 18. The system of claim 11,wherein: the predetermined length of time is a first length of time; thegraphical user interface is a first graphical user interface; and theone or more processors are further configured to: determine a secondlength of time; and cause a second graphical user interface to be loadedonto the client device, the second graphical user interface beingconfigured to remain hidden for the second length of time.
 19. Thesystem of claim 11, wherein the graphical user interface is furtherconfigured to execute in a background of an operating system running onthe client device.
 20. A non-transitory machine-readable medium storinginstructions that, when executed by one or more processors of a machine,cause the machine to perform operations comprising: setting aclient-side variable to a value, the setting being responsive to aclient device loading data from a server; causing a graphical userinterface to be loaded onto the client device, the graphical userinterface being configured to remain hidden for a predetermined lengthof time; detecting that the value of the client-side variable remainsunchanged after the predetermined length of time; and causing display ofthe graphical user interface based on the detecting that the value ofthe client-side variable remains unchanged.